Imports Microsoft.VisualBasic
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
Imports System.Data
Imports DataAccesGenerales
Imports DataAcces

Public Class DataAccesFormatoUnico
  Private Const consTimeOut As Integer = 0 
  
  ''' <summary>
  ''' Funcion para Insertar un regristro en la tabla FormatoUnico
  ''' </summary>
  Public Function FormatoUnico_Insertar(pnidDocumento As Integer, pnidTipoSolicitud As Integer, pnidTipoTramite As Integer, pnidTipo_Empresa As Integer, pnidArea_Trabajo As Integer, pcantidad_Entregada As Integer, pnidEmpresa As Integer, pfecha_Entrega As Date, pfecha_Actualizacion As Date, pfecha_Inicio_Vigencia As Date, pfecha_Fin_Vigencia As Date, pentrega_Credencial As String, ppatente As String, pnombre_Area_Especifica As String, pidCredencial_Acuse_Recibo As String, prazon_Social_Solicitante As String, pempresa_Proveedora As String, pnombre_Acuse_Recibo As String, pnombre_Responsable As String, prepresentante_Legal As String, pmotivo_Actividad As String, pobservaciones As String) As Byte
    Dim pTransaccion As Byte = 0
    Dim mensaje As String = String.Empty
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoInsertar" 
          oraCommandDocumentos.Parameters.Add("pnidDocumento", pnidDocumento)
          oraCommandDocumentos.Parameters.Add("pnidTipoSolicitud", pnidTipoSolicitud)
          oraCommandDocumentos.Parameters.Add("pnidTipoTramite", pnidTipoTramite)
          oraCommandDocumentos.Parameters.Add("pnidTipo_Empresa", pnidTipo_Empresa)
          oraCommandDocumentos.Parameters.Add("pnidArea_Trabajo", pnidArea_Trabajo)
          oraCommandDocumentos.Parameters.Add("pcantidad_Entregada", pcantidad_Entregada)
          oraCommandDocumentos.Parameters.Add("pnidEmpresa", pnidEmpresa)
          oraCommandDocumentos.Parameters.Add("pfecha_Entrega", pfecha_Entrega)
          oraCommandDocumentos.Parameters.Add("pfecha_Actualizacion", pfecha_Actualizacion)
          oraCommandDocumentos.Parameters.Add("pfecha_Inicio_Vigencia", pfecha_Inicio_Vigencia)
          oraCommandDocumentos.Parameters.Add("pfecha_Fin_Vigencia", pfecha_Fin_Vigencia)
          oraCommandDocumentos.Parameters.Add("pentrega_Credencial", pentrega_Credencial)
          oraCommandDocumentos.Parameters.Add("ppatente", ppatente)
          oraCommandDocumentos.Parameters.Add("pnombre_Area_Especifica", pnombre_Area_Especifica)
          oraCommandDocumentos.Parameters.Add("pidCredencial_Acuse_Recibo", pidCredencial_Acuse_Recibo)
          oraCommandDocumentos.Parameters.Add("prazon_Social_Solicitante", prazon_Social_Solicitante)
          oraCommandDocumentos.Parameters.Add("pempresa_Proveedora", pempresa_Proveedora)
          oraCommandDocumentos.Parameters.Add("pnombre_Acuse_Recibo", pnombre_Acuse_Recibo)
          oraCommandDocumentos.Parameters.Add("pnombre_Responsable", pnombre_Responsable)
          oraCommandDocumentos.Parameters.Add("prepresentante_Legal", prepresentante_Legal)
          oraCommandDocumentos.Parameters.Add("pmotivo_Actividad", pmotivo_Actividad)
          oraCommandDocumentos.Parameters.Add("pobservaciones", pobservaciones)

          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add("pMensaje", Oracle.DataAccess.Client.OracleDbType.Varchar2, 200).Direction = ParameterDirection.Output

          oraConnection.Open()
          oraCommandDocumentos.ExecuteNonQuery()
          pTransaccion = CByte(oraCommandDocumentos.Parameters("pTransaccion").Value.ToString())
          mensaje = oraCommandDocumentos.Parameters("pMensaje").Value.ToString()
          oraConnection.Close()
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return pTransaccion
  End Function

  ''' <summary>
  ''' Funcion para Modificar un regristro en la tabla FormatoUnico
  ''' </summary>
  Public Function FormatoUnico_Modificar(pnidDocumento As Integer, pnidTipoSolicitud As Integer, pnidTipoTramite As Integer, pnidTipo_Empresa As Integer, pnidArea_Trabajo As Integer, pcantidad_Entregada As Integer, pnidEmpresa As Integer, pfecha_Entrega As Date, pfecha_Actualizacion As Date, pfecha_Inicio_Vigencia As Date, pfecha_Fin_Vigencia As Date, pentrega_Credencial As String, ppatente As String, pnombre_Area_Especifica As String, pidCredencial_Acuse_Recibo As String, prazon_Social_Solicitante As String, pempresa_Proveedora As String, pnombre_Acuse_Recibo As String, pnombre_Responsable As String, prepresentante_Legal As String, pmotivo_Actividad As String, pobservaciones As String) As Byte
    Dim pTransaccion As Byte = 0
    Dim mensaje As String = String.Empty
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoModificar"
          oraCommandDocumentos.Parameters.Add("pnidDocumento", pnidDocumento)
          oraCommandDocumentos.Parameters.Add("pnidTipoSolicitud", pnidTipoSolicitud)
          oraCommandDocumentos.Parameters.Add("pnidTipoTramite", pnidTipoTramite)
          oraCommandDocumentos.Parameters.Add("pnidTipo_Empresa", pnidTipo_Empresa)
          oraCommandDocumentos.Parameters.Add("pnidArea_Trabajo", pnidArea_Trabajo)
          oraCommandDocumentos.Parameters.Add("pcantidad_Entregada", pcantidad_Entregada)
          oraCommandDocumentos.Parameters.Add("pnidEmpresa", pnidEmpresa)
          oraCommandDocumentos.Parameters.Add("pfecha_Entrega", pfecha_Entrega)
          oraCommandDocumentos.Parameters.Add("pfecha_Actualizacion", pfecha_Actualizacion)
          oraCommandDocumentos.Parameters.Add("pfecha_Inicio_Vigencia", pfecha_Inicio_Vigencia)
          oraCommandDocumentos.Parameters.Add("pfecha_Fin_Vigencia", pfecha_Fin_Vigencia)
          oraCommandDocumentos.Parameters.Add("pentrega_Credencial", pentrega_Credencial)
          oraCommandDocumentos.Parameters.Add("ppatente", ppatente)
          oraCommandDocumentos.Parameters.Add("pnombre_Area_Especifica", pnombre_Area_Especifica)
          oraCommandDocumentos.Parameters.Add("pidCredencial_Acuse_Recibo", pidCredencial_Acuse_Recibo)
          oraCommandDocumentos.Parameters.Add("prazon_Social_Solicitante", prazon_Social_Solicitante)
          oraCommandDocumentos.Parameters.Add("pempresa_Proveedora", pempresa_Proveedora)
          oraCommandDocumentos.Parameters.Add("pnombre_Acuse_Recibo", pnombre_Acuse_Recibo)
          oraCommandDocumentos.Parameters.Add("pnombre_Responsable", pnombre_Responsable)
          oraCommandDocumentos.Parameters.Add("prepresentante_Legal", prepresentante_Legal)
          oraCommandDocumentos.Parameters.Add("pmotivo_Actividad", pmotivo_Actividad)
          oraCommandDocumentos.Parameters.Add("pobservaciones", pobservaciones)

          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add("pMensaje", Oracle.DataAccess.Client.OracleDbType.Varchar2, 200).Direction = ParameterDirection.Output

          oraConnection.Open()
          oraCommandDocumentos.ExecuteNonQuery()
          pTransaccion = CByte(oraCommandDocumentos.Parameters("pTransaccion").Value.ToString())
          mensaje = oraCommandDocumentos.Parameters("pMensaje").Value.ToString()
          oraConnection.Close()
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return pTransaccion
  End Function
  
  ''' <summary>
  ''' Funcion para consultar un registro de la tabla FormatoUnico
  ''' </summary>
  ''' <param name="nidDocumento">numero de documento</param>
  ''' <returns>DataTable</returns>
  ''' <remarks></remarks>
  Public Function FormatoUnico_Consultar(pNidDocumento as Integer) As DataTable
    Dim dtResultado As New DataTable("FormatoUnicoConsulta")
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoConsultar" 
          oraCommandDocumentos.Parameters.Add("pNidDocumento", pNidDocumento)
          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter("pCursor", OracleDbType.RefCursor)).Direction = ParameterDirection.Output

          Dim oraDataAdapter As New OracleDataAdapter(oraCommandDocumentos)
          oraDataAdapter.Fill(dtResultado)
          oraConnection.Close()
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return dtResultado
  End Function
  
  ''' <summary>
  ''' Funcion para generar un combo de la tabla FormatoUnico
  ''' </summary>
  ''' <param name="pNombre">nombre a buscar en la tabla</param>
  ''' <returns>DataTable</returns>
  ''' <remarks>si el nombre es "" retornara todos los registros</remarks>
  Public Function FormatoUnico_Combo(pNombre As String) As DataTable
    Dim dtResultado As New DataTable("FormatoUnicoCombo")
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoCombo" 
		  oraCommandDocumentos.Parameters.Add("pNombre", pNombre)
          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter("pCursor", OracleDbType.RefCursor)).Direction = ParameterDirection.Output

          Dim oraDataAdapter As New OracleDataAdapter(oraCommandDocumentos)
          oraDataAdapter.Fill(dtResultado)
          oraConnection.Close()
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return dtResultado
  End Function
  
  ''' <summary>
  ''' Funcion para generar la cadena XML Chilkat del documento de la tabla FormatoUnico
  ''' </summary>
  ''' <param name="nidDocumento"> numero del documento</param>
  ''' <returns>Chilkat.Xml</returns>
  ''' <remarks></remarks>
  Public Function FormatoUnico_CadenaOriginalXMLChilkat(nidDocumento As Integer) As Chilkat.Xml
    Dim detalleDataSet As New DataSet("DatosFormatoUnico")
    Try
      detalleDataSet = FormatoUnico_DetalleXML(nidDocumento)
	  'En esta parte van las tablas obtenidas en la consulta anterior
	  'separadas dependiendo del reporte a crear, ejemplo:
	  detalleDataSet.Tables(0).TableName = "Informacion del Tramite"
      detalleDataSet.Tables(1).TableName = "Datos FormatoUnico"
      detalleDataSet.Tables(2).TableName = "Archivos Anexos"
      detalleDataSet.Tables(3).TableName = "Incidencias"

      Dim xml As New Chilkat.Xml
      xml.LoadXml(detalleDataSet.GetXml())
      Return xml 'detalleDataSet.GetXml()
    Catch ex As Exception
      Throw ex
    End Try
  End Function

  ''' <summary>
  ''' Funcion para consultar el detalle del documento de la tabla FormatoUnico
  ''' </summary>
  ''' <param name="nidDocumento">numero del documento</param>
  ''' <returns>DataSet</returns>
  ''' <remarks></remarks>
  Public Function FormatoUnico_DetalleXML(ByVal nidDocumento As Integer) As DataSet
    Dim dsDetalle As New DataSet("FormatoUnicoDetalle")
    Dim pTransaccion As Byte = 0
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoDetalleXML"
          oraCommandDocumentos.Parameters.Add("pNidDocumento", nidDocumento)
          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          'En esta parte es para los cursores necesario 
		  oraCommandDocumentos.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter("pEncabezado", OracleDbType.RefCursor)).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter("pDatos", OracleDbType.RefCursor)).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter("pAnexos", OracleDbType.RefCursor)).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter("pIncidencias", OracleDbType.RefCursor)).Direction = ParameterDirection.Output
		
          Dim oraDataAdapter As New OracleDataAdapter(oraCommandDocumentos)
          'pTransaccion = CByte(oraCommandDocumentos.Parameters("pTransaccion").Value.ToString())
          oraDataAdapter.Fill(dsDetalle)
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return dsDetalle
  End Function
  
  ''' <summary>
  ''' Funcion para generar la integracion del documento de la tabla FormatoUnico
  ''' </summary>
  ''' <param name="pNidDocumento">numero del documento</param>
  ''' <returns>Byte</returns>
  ''' <remarks></remarks>
  Public Function FormatoUnico_Integracion(pNidDocumento As Integer) As Byte
    Dim pTransaccion As Byte = 0
    Dim mensaje As String = String.Empty
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoIntegracion"
          oraCommandDocumentos.Parameters.Add("pNidDocumento", pNidDocumento)
          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          oraCommandDocumentos.Parameters.Add("pMensaje", Oracle.DataAccess.Client.OracleDbType.Varchar2, 200).Direction = ParameterDirection.Output

          oraConnection.Open()
          oraCommandDocumentos.ExecuteNonQuery()
          pTransaccion = CByte(oraCommandDocumentos.Parameters("pTransaccion").Value.ToString())
          mensaje = oraCommandDocumentos.Parameters("pMensaje").Value.ToString()
          oraConnection.Close()
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return pTransaccion
  End Function
  
  Public Function FormatoUnico_Borrar(pnid As Integer) As Byte
    Dim pTransaccion As Byte = 0
    Dim mensaje As String = String.Empty
    Try
      Using oraConnection As New Oracle.DataAccess.Client.OracleConnection(ConfigurationManager.ConnectionStrings("EDIV2DESOraClient").ConnectionString)
        Using oraCommandDocumentos As New Oracle.DataAccess.Client.OracleCommand()
          oraCommandDocumentos.Connection = oraConnection
          oraCommandDocumentos.CommandTimeout = consTimeOut
          oraCommandDocumentos.CommandType = CommandType.StoredProcedure
          oraCommandDocumentos.CommandText = "EDIV2.MI_EDIV2GENERALES.FormatoUnicoBorrar"
          oraCommandDocumentos.Parameters.Add("pnid", pnid)
          oraCommandDocumentos.Parameters.Add("pTransaccion", Oracle.DataAccess.Client.OracleDbType.Byte).Direction = ParameterDirection.Output
          
          oraConnection.Open()
          oraCommandDocumentos.ExecuteNonQuery()
          pTransaccion = CByte(oraCommandDocumentos.Parameters("pTransaccion").Value.ToString())
          oraConnection.Close()
        End Using
      End Using
    Catch ex As Exception
      Throw ex
    End Try
    Return pTransaccion
  End Function
  
End Class
